//C11:SynchronizedClass.cpp {-dmc}
// {L} ZThread
#include "zthread/GuardedClass.h"
using namespace ZThread;

class MyClass {
    public:
        void func1() {}
        void func2() {}
};

int main(void) {
    MyClass a;
    a.func1();    // Not synchronized
    a.func2();    // Not synchronized
    GuardedClass<MyClass> b(new MyClass);
    // Synchronized calls, only one thread at a time allowed:
    b->func1();
    b->func2();
}